package com.yuw.controller;

import com.yuw.bean.UserInfoBean;
import com.yuw.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
public class UserControl {
    // 使用ioc、di进行依赖注入
    // 课下作业：spring的@Autowired注解和@Resources注解有什么异同点？
    @Autowired
    @Qualifier("userS")
    private IUserService userService;

    @RequestMapping("/login")
    public ModelAndView doLogin(UserInfoBean userInfo) {
        // 返回的对象
        ModelAndView mav = new ModelAndView();
        // 调用service层进行登录业务逻辑处理
        List<UserInfoBean> lstUsers = userService.query4Login(userInfo);
        // 判断是否登录成功
        if (lstUsers != null && lstUsers.size() > 0) {
            // 登录成功
            // 返回登录成功的视图名
            mav.setViewName("logined/main");
            // 缓存登录成功的数据  类似于 request.setAttribute（）
            mav.addObject("loginedUser", lstUsers.get(0)); // ModelAndView的缓存级别？
        } else {
            // 登录失败，返回登录页面
            mav.setViewName("index");
        }
        // 返回视图
        return mav;
    }

    // 在RESTFul编程中，只要controller中的方法返回的方法结果类型为 ResponseEntity 则，该方法就会进行ajax处理
    // 不会进行默认的视图解析

    @RequestMapping("/doAjaxQuery")
    public ResponseEntity<List<UserInfoBean>> doAjaxQuery(UserInfoBean userInfoBean) {
        System.out.println("参数bean：" + userInfoBean.toString());
        // 调用service层进行查询操作
        List<UserInfoBean> lstUsers = userService.queryUserInfoByParams(userInfoBean);
        return new ResponseEntity<List<UserInfoBean>>(lstUsers, HttpStatus.OK);
    }
}
